package gui;

import dao.DAOCadastroLei;
import dao.exceptions.NonexistentEntityException;
import gui.Controlador;
import gui.UI;
import java.util.logging.Level;
import java.util.logging.Logger;
import modelo.Lei;
import negocio.Negocio;
import negocio.NegocioCadastroLei;

public class ControladorCadastroLei implements Controlador {

    private UI ui;
    private Negocio negocioCadastroLei;
    private JanelaModificarLei janelaModificarLei;

    public void setJanelaModificarLei(JanelaModificarLei janelaModificarLei) {
        this.janelaModificarLei = janelaModificarLei;
    }    

    public ControladorCadastroLei() {
        negocioCadastroLei = new NegocioCadastroLei();
        negocioCadastroLei.setDAO(new DAOCadastroLei());
    }

    public UI getUI() {
        return ui;
    }

    public void setUI(UI ui) {
        this.ui = ui;
    }

    public void inserir(Object o) {
        try {
            Lei l = (Lei) o;
            if (l.getEmenta().equalsIgnoreCase("") || l.getNumeroLei().equalsIgnoreCase("") || l.getProcesso().equalsIgnoreCase("") || l.getTexto().equalsIgnoreCase("")) {
                ui.exibirMensagemErro("Preencha os campos obrigatórios");
            } else {
                negocioCadastroLei.inserir(o);
                ui.exibirMensagem("Lei cadastrada com sucesso!");
            }
        } catch (Exception e) {
            ui.exibirMensagemErro("Não foi possivel cadastrar a lei.");
        }
    }

    public void alterar(Object o) {
        try {
            negocioCadastroLei.alterar(o);
            janelaModificarLei.exibirMensagem("As alterações na lei foi realizada com sucesso.");
        } catch (NonexistentEntityException ex) {
            janelaModificarLei.exibirMensagemErro("Ocorreu um erro desconhecido! A lei não foi alterada.");
        } catch (Exception ex) {
            janelaModificarLei.exibirMensagemErro("Ocorreu um erro desconhecido! A lei não foi alterada.");
        }
    }

    public void excluir(Object o) {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    public void pesquisar() {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    public void pesquisar(Object o) {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    public boolean pesquisarObjetoExistente(Long id) {
        return negocioCadastroLei.pesquisarObjetoExistente(id);
    }

    public void setJanelaResultado(JanelaResultadoPesquisa janelaResultadoPesquisa) {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    public boolean numeroLeiUnica(String numeroLei) {
       return negocioCadastroLei.numeroLeiUnica(numeroLei);
    }

    public boolean existObject(Lei lei) {
        throw new UnsupportedOperationException("Not supported yet.");
    }
    
}
